#ifndef __EXCEL_IEXCELVISITOR_H__
#define __EXCEL_IEXCELVISITOR_H__

#include <string>
using namespace std;

class IExcelVisitor{
	public:
		IExcelVisitor(){}
		virtual ~IExcelVisitor(){};

		virtual bool Initialize() = 0;	//Not Recommand;
		virtual bool Initialize(const std::string&) = 0;
		virtual void Release() = 0;		//Not Recommand;

		virtual void SetPath(const std::string&) = 0;	//Not Recommand;
		virtual void SetSheet(int) = 0;	

		virtual void SetRow(int){}	//Not Recommand;
		virtual void SetCol(int){}	//Not Recommand;

		virtual int GetSheet(){ return 0; }	
		virtual int GetRow(){ return 0; }	//
		virtual int GetCol(){ return 0; }	//

		virtual int GetRowSize() = 0;
		virtual int GetColSize() = 0;

		virtual bool SetSheet( const std::string& ) = 0;
		virtual std::string GetSheetName() = 0;	//?
		//virtual void	GenerateTableFrame( ISimpleTableFrame& rTF ) = 0;	//?

		virtual void GetCellString(std::string&,int,int) = 0;
		virtual int	GetCellInt(int,int) = 0;
		virtual double GetCellDouble(int,int) = 0;

		virtual void GetCellByRow(std::string&){}	//Not Recommand;
		virtual void GetCellByRow(int&){}			//Not Recommand;
		virtual void GetCellDByRow(double&){}		//Not Recommand;

		virtual void GetCellByCol(std::string&){}	//Not Recommand;
		virtual void GetCellByCol(int&){}			//Not Recommand;
		virtual void GetCellDByCol(double&){}		//Not Recommand;
};
#endif	//__EXCEL_IEXCELVISITOR_H__
